package com.flx.ark.algo;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @Author Fenglixiong
 * @Create 2021/12/4 1:20
 * @Description 运用你所掌握的数据结构，设计和实现一个LRU (最近最少使用) 缓存机制 。
 **/
public class LRUCache {

    public static void main(String[] args) {
        LRUCache cache = new LRUCache(10);
    }

    private int capacity;
    private LinkedHashMap<Integer,Integer> cacheMap;

    public LRUCache(int capacity) {
        this.capacity = capacity;
        /**
         * accessOrder:false是按照插入顺序排序，true是按照读取顺序排序
         * removeEldestEntry:返回true说明需要移出最老的元素
         */
        cacheMap = new LinkedHashMap<Integer, Integer>(capacity,0.75f,true){
            @Override
            protected boolean removeEldestEntry(Map.Entry eldest) {
                return cacheMap.size()>capacity;
            }
        };
    }

    public int get(int key){
        return cacheMap.getOrDefault(key,-1);
    }

    public void put(int key,int value){
        cacheMap.put(key,value);
    }

}
